package com.cool.mapper.sysmanagemapper;

import cn.hutool.core.date.DateTime;
import com.cool.po.sysmanagepo.MenuPo;
import com.cool.po.sysmanagepo.PermissionPo;
import com.cool.po.sysmanagepo.RolePo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 角色Mapper
 *
 * @author Jiangmanman
 * @date 2020/07/28
 */
public interface RolePoMapper {
    /**
     * delete by primary key
     *
     * @param roleId primaryKey
     * @return deleteCount
     */
    int deleteByPrimaryKey(Integer roleId);

    /**
     * insert record to table
     *
     * @param record the record
     * @return insert count
     */
    int insert(RolePo record);

    /**
     * insert record to table selective
     *
     * @param record the record
     * @return insert count
     */
    int insertSelective(RolePo record);

    /**
     * select by primary key
     *
     * @param roleId primary key
     * @return object by primary key
     */
    RolePo selectByPrimaryKey(Integer roleId);

    /**
     * update record selective
     *
     * @param record the updated record
     * @return update count
     */
    int updateByPrimaryKeySelective(RolePo record);

    /**
     * update record
     *
     * @param record the updated record
     * @return update count
     */
    int updateByPrimaryKey(RolePo record);

    /**
     * 得到所有用户角色
     *
     * @return {@link List <RolePo> }
     * @author Jiangmanman
     * @date 2020/07/27
     */
    List<RolePo> getAllUserRole();

    /**
     * 选择列表通过id
     *
     * @param id id
     * @return {@link List<RolePo> }
     * @author Jiangmanman
     * @date 2020/07/27
     */
    List<RolePo> selectListById(Integer id);

    /**
     * 批量增加
     *
     * @param integer 整数
     * @param str     str
     * @param date
     * @return {@link Integer }
     * @author Jiangmanman
     * @date 2020/07/27
     */
    Integer addCollection(@Param("staffId") Integer integer, @Param("roleId") String[] str, @Param("date") DateTime date);

    /**
     * 删除联系
     *
     * @param staffId 员工id
     * @return {@link Integer }
     * @author Jiangmanman
     * @date 2020/07/27
     */
    Integer deleteMapConnection(Integer staffId);

    /**
     * 选择所有
     *
     * @param rolePo 角色阿宝
     * @return {@link List<RolePo> }
     * @author Jiangmanman
     * @date 2020/07/28
     */
    List<RolePo> selectAll(RolePo rolePo);

    /**
     * 更新状态通过id
     *
     * @param id    id
     * @param state 状态
     * @return {@link Integer }
     * @author Jiangmanman
     * @date 2020/07/28
     */
    Integer updateStateById(@Param("id") Integer id, @Param("state") Integer state);

    /**
     * 选择菜单列表
     *
     * @param id id
     * @return {@link List<MenuPo> }
     * @author Jiangmanman
     * @date 2020/07/28
     */
    List<MenuPo> selectMenuList(Integer id);


    /**
     * 插入菜单的东西
     *
     * @param roled  角色
     * @param menuId 菜单id
     * @param date   日期
     * @return {@link Integer }
     * @author Jiangmanman
     * @date 2020/07/28
     */
    Integer insertStuffMenu(@Param("roled") Integer roled, @Param("menuId") String[] menuId, @Param("date") DateTime date);

    List<PermissionPo> getUserPermissionByRoleId(Integer stuffId);

}